import { NextResponse } from "next/server"; import { verifyToken } from "@/lib/auth"; import smbClient from "@/lib/smbClient"; export async function GET(request, { params }) { const headers = new Headers(); headers.set("Cache-Control", "no-store"); const decoded = verifyToken(request); if (decoded.error) { return NextResponse.json( { error: decoded.error }, { status: 401, headers } ); } if (decoded.role !== "admin") { console.log(`Unauthorized access attempt by non-admin user: ${decoded.username}`); return NextResponse.json( { error: "Unauthorized access. Admin only." }, { status: 403, headers } ); } const { path: pathArray = [] } = params; const smbPath = pathArray.join("\\"); console.log("Versuche, auf folgenden Admin-Pfad zuzugreifen:", smbPath); return new Promise((resolve) => { smbClient.readdir(smbPath, (err, files) => { if (err) { console.error("Fehler beim Zugriff auf den Admin-Ordner:", err); resolve( NextResponse.json( { error: "Fehler beim Zugriff auf den Ordner", details: err.message, }, { status: 500, headers } ) ); } else if (!files || files.length === 0) { console.log(`Keine Dateien im Pfad ${smbPath} gefunden.`); resolve( NextResponse.json( { message: "Keine Dateien im angegebenen Ordner gefunden." }, { status: 200, headers } ) ); } else { const sortedFiles = [...files].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); resolve(NextResponse.json({ files: sortedFiles }, { status: 200, headers })); } }); }); }